package cn.edu.sdjzu.knoverse.config;

import cn.dev33.satoken.stp.StpUtil;
import cn.edu.sdjzu.knoverse.constant.SaSessionConstant;
import cn.edu.sdjzu.knoverse.model.entity.kg.BaseNode;
import cn.edu.sdjzu.knoverse.model.vo.system.user.LoginVo;
import org.springframework.data.neo4j.core.mapping.callback.BeforeBindCallback;
import org.springframework.stereotype.Component;

/**
 * 节点审计信息填充
 */
@Component
public class NodeAuditingEventListener implements BeforeBindCallback<BaseNode> {

    @Override
    public BaseNode onBeforeBind(BaseNode entity) {
        if (StpUtil.isLogin()) {
            LoginVo userInfo = (LoginVo) StpUtil.getSession().get(SaSessionConstant.USER);
            // 第一次保存时，设置创建人信息
            if(entity.getCreatedById() == null && entity.getCreatedByUsername() == null) {
                entity.setCreatedById(userInfo.getId());
                entity.setCreatedByUsername(userInfo.getUsername());
            }
            // 每次更新都设置更新人信息
            entity.setUpdatedById(userInfo.getId());
            entity.setUpdatedByUsername(userInfo.getUsername());
        }
        
        return entity;
    }
}